#ifndef LOG_LOG_H
#define LOG_LOG_H

#include <base/json_fwd.h>

#include <log/async_stdout_sink.h>
#include <log/async_syslog_sink.h>
#include <log/async_file_sink.h>

namespace log {

class Log {
  public:
    Log();
    Log(const Log& old);
    ~Log();
    void fillDefaultConfig() const;
    bool initialize();
    void cleanup();
    void setFilePath(const std::string& file_path);
    static void makeReflectable(const std::string& ref_id);
  protected:
    void initSink(log::Sink &ch);
  private:
    AsyncStdoutSink async_stdout_sink_;
    AsyncFileSink   async_file_sink_;
    // log::AsyncSyslogSink async_syslog_sink_;
};

}

#endif
